Playing a Waveform-Audio File

The following example opens a waveform-audio device and plays the waveform-audio file specified by the lpszWAVEFileName parameter.

// Plays a specified waveform-audio file using MCI_OPEN and MCI_PLAY.

// Returns when playback begins. Returns 0L on success, otherwise

// returns an MCI error code.

DWORD playWAVEFile(HWND hWndNotify, LPSTR lpszWAVEFileName)

    UINT wDeviceID;

    DWORD dwReturn;

    MCI_OPEN_PARMS mciOpenParms;

    MCI_PLAY_PARMS mciPlayParms;

 

    // Open the device by specifying the device and filename.

    // MCI will choose a device capable of playing the specified file.

    mciOpenParms.lpstrDeviceType = "waveaudio";

    mciOpenParms.lpstrElementName = lpszWAVEFileName;

    if (dwReturn = mciSendCommand(0, MCI_OPEN,
       MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, (DWORD)(LPVOID) &mciOpenParms))

    

        // Failed to open device. Don't close it; just return error.

        return (dwReturn);

    }

 

    // The device opened successfully; get the device ID.

    wDeviceID = mciOpenParms.wDeviceID;

 

    // Begin playback. The window procedure function for the parent

    // window will be notified with an MM_MCINOTIFY message when

    // playback is complete. At this time, the window procedure closes

    // the device.

    mciPlayParms.dwCallback = (DWORD) hWndNotify;

    if (dwReturn = mciSendCommand(wDeviceID, MCI_PLAY, MCI_NOTIFY,

        (DWORD)(LPVOID) &mciPlayParms))

   

        mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);

        return (dwReturn);

    }

 

    return (0L);

}